package 简单.模拟;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * 给你个整数数组 arr，其中每个元素都 不相同。
 * 请你找到所有具有最小绝对差的元素对，并且按升序的顺序返回。
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/minimum-absolute-difference/
 */
public class 最小绝对差_1200 {

    public static void main(String[] args) {

    }

    /**
     * 排序+一次遍历
     *
     * @param arr
     * @return
     */
    public List<List<Integer>> minimumAbsDifference(int[] arr) {
        Arrays.sort(arr);
        List<List<Integer>> lists = new ArrayList<>();
        int preDiff = Integer.MAX_VALUE;
        for (int i = 1; i < arr.length; i++) {
            if (arr[i] - arr[i - 1] < preDiff) {
                lists = new ArrayList<>();
                List<Integer> curList = new ArrayList<>();
                curList.add(arr[i - 1]);
                curList.add(arr[i]);
                lists.add(curList);
                preDiff = arr[i] - arr[i - 1];
            } else if (arr[i] - arr[i - 1] == preDiff) {
                List<Integer> curList = new ArrayList<>();
                curList.add(arr[i - 1]);
                curList.add(arr[i]);
                lists.add(curList);
            }
        }
        return lists;
    }

}
